
//***************************************************************************
//
//  hbaapi.mof
//
//  Module: WDM classes to expose HBA api data from drivers
//
//  Purpose: Contains WDM classes that specify the HBA data to be exposed
//           via the HBA api set.
//
//  NOTE: This file contains information that is based upon an earlier
//        revision of the HBAAPI 2.18 specification.
//
//  NOTE: This is currently under revision to SM-HBA Dec 2005
//
//  Copyright (c) 2001 Microsoft Corporation
//
//***************************************************************************

#pragma namespace("\\\\.\\Root\\wmi")
instance of __namespace{ name="ms_804";};
#pragma namespace("\\\\.\\Root\\wmi\\ms_804")

[Description("NPIV operations that can be performed on a physical adapter") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_FibrePortNPIVMethods
{
  [Description("Create a virtual port with a specific WWPN.") : Amended] void CreateVirtualPort([OUT,Description("Return code") : Amended] uint32 Status,[IN,Description("The world wide port name of the virtual port to create") : Amended] uint8 WWPN[],[IN,Description("The world wide node name to associate with the created virtual port") : Amended] uint8 WWNN[],[IN,Description("An opaque tag passed in by the app. 128 bit so that a guid can be stored in it.") : Amended] uint8 Tag[],[IN,Description("Port symbolic name") : Amended] uint16 VirtualName[]);
  [Description("Remove a virtual port ") : Amended] void RemoveVirtualPort([out,Description("Return code") : Amended] uint32 Status,[in,Description("The world wide port name of the virtual port") : Amended] uint8 WWPN[]);
};

[Description("Embedded class that describes DH-CHAP parameters.") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_DH_Chap_Parameters
{
  [Description("Length in bytes of the shared secret.") : Amended] uint32 SharedSecretLength;
  [Description("Shared Secret Encoding") : Amended] uint8 SecretEncoding;
  [Description("Shared secret to be used at the basis of a DH-CHAP challenge.") : Amended] uint8 SharedSecret[];
};

[Description("NPIV capabilities") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_NPIVCapabilities
{
  [Description("DH-CHAP available for physical port") : Amended] boolean DhChapAvailableOnPhysicalPort;
  [Description("DH-CHAP available for virtual ports") : Amended] boolean DhChapAvailableOnVirtualPorts;
  [Description("Number of virtual ports that can be created on this physical FC port") : Amended] uint16 MaxVirtualPortCount;
};

[Description("NPIV operations that can be performed on a physical adapter which enable Fibre Channel in a Guest Virtual Machine") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_FibrePortNPIVMethodsEx
{
  [Description("Enable DH-CHAP for the Physical Port of a Fibre Channel HBA, allowing for unidirectional authentication of the physical port by the Fibre Channel fabric.") : Amended] void SetChapForPhysicalPort([OUT,Description("Return code") : Amended] uint32 Status,[IN,Description("Parameters necessary to respond to a DH-CHAP challenge.") : Amended] MSFC_DH_Chap_Parameters CHAP);
  [Description("Disable DH-CHAP for the Physical Port of a Fibre Channel HBA.") : Amended] void RemoveChapForPhysicalPort([OUT,Description("Return code") : Amended] uint32 Status);
  [Description("Create a virtual port on behalf of a Guest Virtual Machine with a specific WWPN with no authentication mechanism.") : Amended] void CreateVirtualPortEx([OUT,Description("Return code") : Amended] uint32 Status,[IN,Description("The world wide port name of the virtual port to create") : Amended] uint8 WWPN[],[IN,Description("The world wide node name to associate with the created virtual port") : Amended] uint8 WWNN[],[IN,Description("An opaque tag passed in by the app. 128 bit so that a guid can be stored in it.") : Amended] uint8 Tag[],[IN,Description("Port symbolic name") : Amended] uint16 VirtualName[]);
  [Description("Create a virtual port on behalf of a Guest Virtual Machine with a specific WWPN using DH-CHAP for unidirectional authentication of the N_Port by the FibreChannel fabric.") : Amended] void CreateVirtualPortExUsingDHCHAP([OUT,Description("Return code") : Amended] uint32 Status,[IN,Description("The world wide port name of the virtual port to create") : Amended] uint8 WWPN[],[IN,Description("The world wide node name to associate with the created virtual port") : Amended] uint8 WWNN[],[IN,Description("An opaque tag passed in by the app. 128 bit so that a guid can be stored in it.") : Amended] uint8 Tag[],[IN,Description("Port symbolic name") : Amended] uint16 VirtualName[],[IN,Description("Parameters necessary to respond to a DH-CHAP challenge.") : Amended] MSFC_DH_Chap_Parameters CHAP);
  [Description("Remove a virtual port ") : Amended] void RemoveVirtualPortEx([OUT,Description("Return code") : Amended] uint32 Status,[IN,Description("The world wide port name of the virtual port") : Amended] uint8 WWPN[]);
  [Description("Rescan virtual port, including all logical buses associated with that port. Miniport is expected to notify Storport for targeted bus rescan") : Amended] void RescanVirtualPort([OUT,Description("Return Code") : Amended] uint32 Status,[IN,Description("The world wide port name of the virtual port") : Amended] uint8 WWPN[]);
};

[Description("Embedded class that describes the  properties of a virtual port.") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_VirtualFibrePortAttributes
{
  [Description("Status of the virtual port") : Amended] uint32 Status;
  [Description("FC Id") : Amended] uint32 FCId;
  [Description("Port symbolic name") : Amended] uint16 VirtualName[];
  [Description("An opaque tag passed in by the app. 128 bit so that a guid can be stored in it.") : Amended] uint8 Tag[];
  [Description("The world wide port name of the virtual port") : Amended] uint8 WWPN[];
  [Description("The world wide node name of the virtual port") : Amended] uint8 WWNN[];
  [Description("The world wide node name of fabric") : Amended] uint8 FabricWWN[];
};

[Description("Retrieve the virtual ports created on a physical port.") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_FibrePortNPIVAttributes
{
  [Description("The world wide port name of the physical port") : Amended] uint8 WWPN[];
  [Description("The world wide node name of the physical port") : Amended] uint8 WWNN[];
  [Description("Number of virtual ports on this adapter.") : Amended] uint32 NumberVirtualPorts;
  [Description("Array of virtual ports.") : Amended] MSFC_VirtualFibrePortAttributes VirtualPorts[];
};

[Description("LUN to virtual port mapping.") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_NPIVLUNMappingInformation
{
  [Description("The world wide port name of the virtual port") : Amended] uint8 WWPNVirtualPort[];
  [Description("The world wide port name of the physical port") : Amended] uint8 WWPNPhysicalPort[];
};

[Description("Extended LUN to virtual port mapping.") : Amended,AMENDMENT, LOCALE(0x0804)] 
class MSFC_NPIVLUNMappingInformationEx
{
  [Description("The world wide port name of the virtual port") : Amended] uint8 WWPNVirtualPort[];
  [Description("The world wide port name of the physical port") : Amended] uint8 WWPNPhysicalPort[];
  [Description("The SCSI Port ID associated with this LUN, matching the SCSI_ADDRESS") : Amended] uint8 PortNumber;
  [Description("The SCSI Path ID associated with this LUN, matching the SCSI_ADDRESS") : Amended] uint8 OSBus;
  [Description("The SCSI Target ID associated with this LUN, matching the SCSI_ADDRESS") : Amended] uint8 OSTarget;
  [Description("The SCSI LUN, matching the SCSI_ADDRESS") : Amended] uint8 OSLUN;
};
